﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using LogicaNegocio;

namespace PresentacionEscritorio
{
    public partial class FormRecepcionista : Form
    {
        frmMdiContainer myMdi;
        public string nombreUsuarioLogueado { get; set; }
        public int idUsuarioLogueado { get; set; }
        private Empleado empLogueado;

        private bool yaLlameAcerrarSesion;

        public CajaDiaria miCaja { get; set; }

        public FormRecepcionista()
        {
            InitializeComponent();
        }

        private void FormRecepcionista_Load(object sender, EventArgs e)
        {
            yaLlameAcerrarSesion = false;
            this.Text = "TodoSalud - Recepción: " + nombreUsuarioLogueado;

            myMdi = new frmMdiContainer();
            myMdi.idUsuarioLogueado = idUsuarioLogueado;
            myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
            myMdi.tipoFormPadre = 1;
            myMdi.Owner = this;

            GestorEmpleado ge = new GestorEmpleado();
            empLogueado = ge.obtenerEmpleadoPorUsuario(idUsuarioLogueado);

            iniciarAperturaCaja();
        }

        private void iniciarAperturaCaja()
        {
            //aqui se solicita el monto inicial de la caja, se la abre y se actualiza esto en la bd
            frmSolicitudAperturaCaja formAbrirCaja = new frmSolicitudAperturaCaja();
            formAbrirCaja.EmpResponsable = empLogueado;
            formAbrirCaja.Owner = this;
            formAbrirCaja.ShowDialog();

            myMdi.MiCaja = miCaja;
        }

        #region MenuPacientes
        private void altaDePacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarPaciente formRegPac = new frmRegistrarPaciente();
            formRegPac.MdiParent = myMdi;
            formRegPac.setOpcion(Opcion.OpRegistrar);
            formRegPac.Show();
            myMdi.Show();

        }

        private void consultarPacientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarPaciente formConsulPac = new frmConsultarPaciente();
            formConsulPac.MdiParent = myMdi;
            formConsulPac.setOpcion(Opcion.OpConsultar);
            formConsulPac.Show();
            myMdi.Show();
        }

        private void modificarDatosPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarPaciente formModifPac = new frmConsultarPaciente();
            formModifPac.MdiParent = myMdi;
            //formModifPac.setOpcion(Opcion.OpModificar);
            formModifPac.Show();
            myMdi.Show();
        }

        private void registrarInactividadPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarInactividadPaciente formInacPaciente = new frmRegistrarInactividadPaciente();
            formInacPaciente.MdiParent = myMdi;
            //formInacPaciente.setOpcion(Opcion.OpDarBaja);
            formInacPaciente.Show();
            myMdi.Show();
        }

        #endregion

        #region MenuAtencionMédica
        private void generarAgendaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmGenerarAgendaTurnos frmGenerarAgendaTur = new frmGenerarAgendaTurnos();
            frmGenerarAgendaTur.MdiParent = myMdi;
            frmGenerarAgendaTur.setOpcion(Opcion.OpRegistrar);
            frmGenerarAgendaTur.Show();
            myMdi.Show();
        }


        private void consultarTurnosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmGestionTurnos2 frmGestion = new frmGestionTurnos2();
            frmGestion.MdiParent = myMdi;
            frmGestion.Show();
            myMdi.Show();
        }

        private void asistenciaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmAsistenciaMedico frmAsis = new frmAsistenciaMedico();
            frmAsis.MdiParent = myMdi;
            //frmAsis.setOpcion(Opcion.OpRegistrar);
            frmAsis.Show();
            myMdi.Show();
        }

        #endregion

        #region MenuAtencionExterna
        private void registrarLlamadaDeEmergenciaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarLlamadaDeEmergencia frmRegLlam = new frmRegistrarLlamadaDeEmergencia();
            frmRegLlam.MdiParent = myMdi;
            //frmRegLlam.setOpcion(Opcion.OpRegistrar);
            frmRegLlam.Show();
            myMdi.Show();
        }

        private void consultarLlamadaDeEmergenciaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarLlamadaDeEmergencias formConsulLlam = new frmConsultarLlamadaDeEmergencias();
            formConsulLlam.MdiParent = myMdi;
            // formConsulLlam.setOpcion(Opcion.OpConsultar);
            formConsulLlam.Show();
            myMdi.Show();
        }

        #endregion

        #region MenuCaja
        private void cobroCuotasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarCobroCuotas formRegCobroCuo = new frmRegistrarCobroCuotas();
            formRegCobroCuo.MdiParent = myMdi;
            //formRegCobroCuo.setOpcion(Opcion.OpRegistrar);
            formRegCobroCuo.Show();
            myMdi.Show();

        }

        private void cobroAtenciónMédicaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmCobroAtencionMédica formCobroAtencion = new frmCobroAtencionMédica();
            formCobroAtencion.MdiParent = myMdi;
            //formCobroAtencion.setOpcion(Opcion.OpRegistrar);
            formCobroAtencion.Show();
            myMdi.Show();
        }

        private void pagoMédicoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarPagoMedico formPagoMedico = new frmRegistrarPagoMedico();
            formPagoMedico.MdiParent = myMdi;
            //formPagoMedico.setOpcion(Opcion.OpRegistrar);
            formPagoMedico.Show();
            myMdi.Show();
        }

        private void otrosConceptosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmPagoOtrosConceptos formPagoOtrosCon = new frmPagoOtrosConceptos();
            formPagoOtrosCon.MdiParent = myMdi;
            //formPagoOtrosCon.setOpcion(Opcion.OpRegistrar);
            formPagoOtrosCon.Show();
            myMdi.Show();
        }

        private void consultarCajaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarCaja formConsulCaja = new frmConsultarCaja();
            formConsulCaja.MdiParent = myMdi;
            //formConsulCaja.setOpcion(Opcion.OpConsultar);
            formConsulCaja.Show();
            myMdi.Show();
        }

        #endregion


        #region MenuContextPacientes
        private void registrarPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarPaciente formRegPac = new frmRegistrarPaciente();
            formRegPac.MdiParent = myMdi;
            formRegPac.setOpcion(Opcion.OpRegistrar);
            formRegPac.Show();
            myMdi.Show();
        }

        private void consultarPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarPaciente formConsulPac = new frmConsultarPaciente();
            formConsulPac.MdiParent = myMdi;
            formConsulPac.setOpcion(Opcion.OpConsultar);
            formConsulPac.Show();
            myMdi.Show();
        }

        private void modificarPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarPaciente formModifPac = new frmConsultarPaciente();
            formModifPac.MdiParent = myMdi;
            //formModifPac.setOpcion(Opcion.OpModificar);
            formModifPac.Show();
            myMdi.Show();
        }

        private void btnPacientes_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuStripPacientes.Show(this, p);
        }


        #endregion

        #region MenuContextAgenda
        private void AsignarTurnosToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmAsignarTurno formAsigTur = new frmAsignarTurno();
            formAsigTur.MdiParent = myMdi;
            //formAsigTur.setOpcion(Opcion.OpRegistrar);
            formAsigTur.Show();
            myMdi.Show();
        }

        private void registrarLlegadaATurnoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarLlegadaTurno formRegLleg = new frmRegistrarLlegadaTurno();
            formRegLleg.MdiParent = myMdi;
            //formRegLleg.setOpcion(Opcion.OpRegistrar);
            formRegLleg.Show();
            myMdi.Show();
        }

        private void generarAgendaTurnosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmGenerarAgendaTurnos formGeneAg = new frmGenerarAgendaTurnos();
            formGeneAg.MdiParent = myMdi;
            //formGeneAg.setOpcion(Opcion.OpRegistrar);
            formGeneAg.Show();
            myMdi.Show();
        }

        private void gestionarTurnosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmGestionTurnos2 formGes2 = new frmGestionTurnos2();
            formGes2.MdiParent = myMdi;
            //formGes2.setOpcion(Opcion.OpRegistrar);
            formGes2.Show();
            myMdi.Show();

        }

        private void btnTurnos_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuStripAgenda.Show(this, p);
        }

        #endregion

        #region MenuContextCaja
        private void cobroAtenciónMédicaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmCobroAtencionMédica formCobroAtencion = new frmCobroAtencionMédica();
            formCobroAtencion.MdiParent = myMdi;
            //formCobroAtencion.setOpcion(Opcion.OpRegistrar);
            formCobroAtencion.Show();
            myMdi.Show();
        }

        private void cobroCuotarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarCobroCuotas formRegCobroCuo = new frmRegistrarCobroCuotas();
            formRegCobroCuo.MdiParent = myMdi;
            //formRegCobroCuo.setOpcion(Opcion.OpRegistrar);
            formRegCobroCuo.Show();
            myMdi.Show();
        }

        private void pagoAMédicosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmRegistrarPagoMedico formPagoMedico = new frmRegistrarPagoMedico();
            formPagoMedico.MdiParent = myMdi;
            //formPagoMedico.setOpcion(Opcion.OpRegistrar);
            formPagoMedico.Show();
            myMdi.Show();
        }

        private void otrosConceptosToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmPagoOtrosConceptos formPagoOtrosCon = new frmPagoOtrosConceptos();
            formPagoOtrosCon.MdiParent = myMdi;
            //formPagoOtrosCon.setOpcion(Opcion.OpRegistrar);
            formPagoOtrosCon.Show();
            myMdi.Show();
        }

        private void consultarCajaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmConsultarCaja formConsulCaja = new frmConsultarCaja();
            formConsulCaja.MdiParent = myMdi;
            //formConsulCaja.setOpcion(Opcion.OpConsultar);
            formConsulCaja.Show();
            myMdi.Show();
        }

        private void btnCaja_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuStripCaja.Show(this, p);
        }


        #endregion


        #region MenuContextAsistencia
        private void registrarAsistenciaMedicoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myMdi.IsDisposed)
            {
                myMdi = new frmMdiContainer();
                myMdi.idUsuarioLogueado = idUsuarioLogueado;
                myMdi.nombreUsuarioLogueado = nombreUsuarioLogueado;
                myMdi.tipoFormPadre = 1;
                myMdi.Owner = this;
                myMdi.MiCaja = miCaja;
            }
            frmAsistenciaMedico frmAsis = new frmAsistenciaMedico();
            frmAsis.MdiParent = myMdi;
            //frmAsis.setOpcion(Opcion.OpRegistrar);
            frmAsis.Show();
            myMdi.Show();
        }

        private void btnMedicos_Click(object sender, EventArgs e)
        {
            Point p = PointToClient(MousePosition);
            contextMenuStripAsistencia.Show(this, p);
        }
        #endregion

        private void cerrarSesiónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult dr = MessageBox.Show("¿Está seguro de que desea cerrar sesión y salir?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (dr == DialogResult.OK)
            {
                cerrarCaja();
                cerrarSesión();
            }
        }

        private void cerrarCaja()
        {
            miCaja.HoraCierre = DateTime.Now.TimeOfDay;
            GestorCaja.cerrarCaja(miCaja);
            
        }

        private void cerrarSesión()
        {
            GestorUsuarios gu = new GestorUsuarios();

            bool res = gu.cerrarSesion(idUsuarioLogueado);
            if (res)
            {
                yaLlameAcerrarSesion = true;
                frmIniciarSesion frm = new frmIniciarSesion();
                this.Hide();
                frm.Show();
                //Application.Exit();
            }
            else
            {
                MessageBox.Show("No se puede cerrar sesión");
            }
        }

        private void FormRecepcionista_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (!yaLlameAcerrarSesion)
            {
                DialogResult dr = MessageBox.Show("¿Está seguro de que desea cerrar sesión y salir?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (dr == DialogResult.OK)
                {
                    cerrarSesión();
                }
                else
                    e.Cancel = true;
            }
        }

        private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }
    }
}
